home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / bsf.jar / com / ibm / bsf / util / BSFClassLoader.class (.txt) next >
Encoding:
Java Class File  |  1999-09-24  |  1.9 KB  |  50 lines

  1. package com.ibm.bsf.util;
  2.  
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.util.Hashtable;
  6.  
  7. class BSFClassLoader extends ClassLoader {
  8.    Hashtable cache = new Hashtable();
  9.    String tempDir = ".";
  10.  
  11.    public void setTempDir(String var1) {
  12.       this.tempDir = var1;
  13.    }
  14.  
  15.    private byte[] loadClassData(String var1) throws Exception {
  16.       String var2 = this.tempDir + File.separatorChar + var1 + ".class";
  17.       FileInputStream var3 = new FileInputStream(var2);
  18.       byte[] var4 = new byte[var3.available()];
  19.       var3.read(var4);
  20.       var3.close();
  21.       return var4;
  22.    }
  23.  
  24.    public synchronized Class loadClass(String var1, boolean var2) throws ClassNotFoundException {
  25.       Class var3 = (Class)this.cache.get(var1);
  26.       if (var3 == null) {
  27.          try {
  28.             var3 = ((ClassLoader)this).findSystemClass(var1);
  29.             this.cache.put(var1, var3);
  30.             return var3;
  31.          } catch (ClassNotFoundException var6) {
  32.             try {
  33.                byte[] var4 = this.loadClassData(var1);
  34.                var3 = ((ClassLoader)this).defineClass(var1, var4, 0, var4.length);
  35.                this.cache.put(var1, var3);
  36.             } catch (Exception var5) {
  37.                ((Throwable)var5).printStackTrace();
  38.                throw new ClassNotFoundException("unable to resolve class '" + var1 + "'");
  39.             }
  40.          }
  41.       }
  42.  
  43.       if (var2) {
  44.          ((ClassLoader)this).resolveClass(var3);
  45.       }
  46.  
  47.       return var3;
  48.    }
  49. }
  50.